/** 创建菜单参数 */
export interface CreateMenuParam {
  /**
   * 父级菜单Id
   */
  parentMenuId: string;

  /**
   * 菜单标题
   */
  menuTitle: string;

  /**
   * 菜单名称
   */
  menuName?: string;

  /**
   * 菜单图标
   */
  menuIcon: string;

  /**
   * 菜单路由
   */
  menuPath?: string;

  orderNum: number;

  /**
   * 重定向地址
   */
  redirectUrl?: string;

  /**
   * 组件名称
   */
  component?: string;

  /**
   * 是否是链接
   */
  isLink: number;

  /**
   * 是否隐藏
   */
  isHide: number;

  /**
   * 是否全屏
   */
  isFull: number;

  /**
   * 是否固定
   */
  isAffix: number;

  /**
   * 是否缓存
   */
  isKeepAlive: number;

  /**
   * 状态
   */
  status: number;

  /**
   * 备注
   */
  remark?: string;
}

/** 修改菜单参数 */
export interface EditMenuInfoParam {
  /**
   * 菜单Id
   */
  menuId: string;

  /**
   * 父级菜单Id
   */
  parentMenuId: string;

  /**
   * 菜单标题
   */
  menuTitle: string;

  /**
   * 菜单名称
   */
  menuName?: string;

  /**
   * 菜单图标
   */
  menuIcon: string;

  /**
   * 菜单路由
   */
  menuPath: string;

  /** 排序号码 */
  orderNum: number;

  /**
   * 重定向地址
   */
  redirectUrl?: string;

  /**
   * 组件名称
   */
  component?: string;

  /**
   * 是否是链接
   */
  isLink: number;

  /**
   * 是否隐藏
   */
  isHide: number;

  /**
   * 是否全屏
   */
  isFull: number;

  /**
   * 是否固定
   */
  isAffix: number;

  /**
   * 是否缓存
   */
  isKeepAlive: number;

  /**
   * 状态
   */
  status: number;

  /**
   * 备注
   */
  remark?: string;
}

/** 修改菜单状态参数 */
export interface EditMenuStatusParam {
  /**
   * 菜单Id
   */
  menuId: string;

  /**
   * 状态
   */
  status: number;
}

/** 查询菜单列表参数 */
export interface GetMenuListParam {
  /**
   * 菜单标题
   */
  menuTitle?: string;

  /**
   * 状态
   */
  status?: number;
}

/**
 * 树形菜单数据
 */
export interface MenuTreeResult {
  /**
   * 菜单Id
   */
  menuId: string;

  /**
   * 父级菜单Id
   */
  parentMenuId: string;

  /**
   * 菜单标题
   */
  menuTitle: string;

  /**
   * 菜单名称
   */
  menuName?: string;

  /**
   * 菜单图标
   */
  menuIcon?: string;

  /**
   * 菜单路径
   */
  menuPath: string;

  /** 排序号码 */
  orderNum: number;

  /**
   * 重定向地址
   */
  redirectUrl?: string;

  /**
   * 组件名称
   */
  component: string;

  /**
   * 是否是链接
   */
  isLink: number;

  /**
   * 是否隐藏
   */
  isHide: number;

  /**
   * 是否全屏
   */
  isFull: number;

  /**
   * 是否固定
   */
  isAffix: number;

  /**
   * 是否缓存
   */
  isKeepAlive: number;

  /**
   * 状态 0-禁用 1正常 -1删除
   */
  status: number;

  /**
   * 创建时间
   */
  createDate: string;

  /**
   * 创建者Id
   */
  createUserId: string;

  /**
   * 创建者
   */
  createUserName: string;

  /**
   * 更新时间
   */
  updateDate?: string;

  /**
   * 更新者Id
   */
  updateUserId?: string;

  /**
   * 更新者
   */
  updateUserName?: string;

  /** 子菜单 */
  children?: MenuTreeResult[];
}

export interface AuthMenuItem {
  menuId?: string;
  parentMenuId?: string;
  orderNum: number;
  path: string;
  name: string;
  component?: string;
  meta: AuthMenuItemMeta;
  children: AuthMenuItem[];
}

export interface AuthMenuItemMeta {
  icon: string;
  title: string;
  isLink: string;
  isHide: boolean;
  isFull: boolean;
  isAffix: boolean;
  isKeepAlive: boolean;
}
